#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QColor>
#include <QPoint>
#include <QMap>
#include <QKeyEvent>//键盘事件
#include "rule.h"
#include <QSound>

#define grid_width 140  //矩形标签的长度
#define line_width 20  //矩形标签线宽
#define max_i 4
#define max_j 4

//enum Color{

//    zero=QRgb(204,192,178), //0
//    nu1=QRgb(238,228,218),  //2
//    nu2=QRgb(237,224,200),  //4
//    nu3=QRgb(241,177,121),  //8
//    nu4=QRgb(133,155,113),  //16
//    nu5=QRgb(246,124,95),//32
//    nu6=QRgb(245,91,57),//64
//    nu7=QRgb(28,151,150),//128
//    nu8=QRgb(237,204,97),//256
//    nu9=QRgb(255,0,128),//512
//    nu10=QRgb(145,0,128),//1024
//    nu11=QRgb(242,17,158),//2048
//    nu12=QRgb(200,0,100),//4091
//    nu13=QRgb(242,127,100), //8192
//    back=QRgb(186,172,159), //背景颜色

//};


namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    //explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    Rule * r;
    QSound *gameSound;
    void paintEvent(QPaintEvent *);

    int m_map[max_i][max_j]={};  //游戏后台的数据
   // int m_num[14]={0,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192};
    //ppoint m_p[max_i][max_j]; //存放各个标签的左上角的坐标
    QPoint m_p[max_i][max_j];


   // QColor m_color[15]={zero,nu1,nu2,nu3,nu4,nu5,nu6,nu7,nu8,nu9,nu10,nu11,nu12,nu13,back};

    //bool m_gameover;
    int m_score;//保存当前的分数
    int m_best; //记录历史最高的分数

    QMap<int ,QColor>  map;  //存放不同数字的背景颜色

    void gameInit();//游戏初始化
    void generate_num();//随机生成 2或4
    void add_color();
    QColor set_backcolor(int num);

    void keyPressEvent(QKeyEvent *event); //键盘按下事件
    void move_up();
    void move_down();
    void move_left();
    void move_right();
    bool game_over();//判断游戏是否结束


signals:
    void chooseback();

private:
    Ui::MainWindow *ui;


};

#endif // MAINWINDOW_H
